/**
 * projectName : final4it
 * className: ajaxUtils
 * description: TODO testing for js
 *
 * @author : chengjiang@jasonch.tech
 * @date: 2022/05/03
 */
function createXMLHttpRequest(){//  创建异步对象
    try {
        return new XMLHttpRequest();
    }catch (e) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e) {
                alert("error!!!!!!!!!!!!!!");
            }
        }
    }
}
//
/* option: here follows;object;
* 请求方式 method,
  请求的 urlurl,
  是否异步 asyn,
  请求体 params,
  回调方法 callback,
  服务器响应数据转换为何类型 type
* e.g.:
* {
*   method: "post",
*   // ...
*   type: "json"
* }
* */
function ajax(option){
    var xmlHttp = createXMLHttpRequest();
    if(!option.method){// 默认为get 请求；
        option.method = "get";
    }
    if(option.asyn === undefined){// 默认为 true；
        option.asyn = true;
    }
    xmlHttp.open(option.method,option.url,option.asyn);
    if("post"===option.method){
        xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    }// end the if;

    xmlHttp.send(option.params);
    // 注册监听；
    xmlHttp.onreadystatechange = function () {
        if(xmlHttp.readyState===4&&xmlHttp.status===200){
            var data;
            if(!option.type){
                data = xmlHttp.responseText;
            } else if(option.type==="xml"){
                data = xmlHttp.responseXML;
            } else if(option.type === "text") {
                data = xmlHttp.responseText;
            } else if(option.type === "json"){
                data = eval("("+xmlHttp.responseText+")");
            }
            option.callback(data);
        }
    }
}